[INFO] cloning repository https://github.com/zaccrites/rust-gameboy
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/zaccrites/rust-gameboy" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzaccrites%2Frust-gameboy", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzaccrites%2Frust-gameboy'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 4bcaeb630e3708fc4a386368c0706d6f5a67591f
[INFO] checking zaccrites/rust-gameboy against master#03c609abb6638f9d7f49f34326d4137d07f5cd61 for pr-155945
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fzaccrites%2Frust-gameboy" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/zaccrites/rust-gameboy
[INFO] finished tweaking git repo https://github.com/zaccrites/rust-gameboy
[INFO] tweaked toml for git repo https://github.com/zaccrites/rust-gameboy written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/zaccrites/rust-gameboy on toolchain 03c609abb6638f9d7f49f34326d4137d07f5cd61
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/zaccrites/rust-gameboy already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded sdl2-sys v0.30.0
[INFO] [stderr]   Downloaded rand v0.3.16
[INFO] [stderr]   Downloaded num-iter v0.1.34
[INFO] [stderr]   Downloaded num-integer v0.1.35
[INFO] [stderr]   Downloaded magenta v0.1.1
[INFO] [stderr]   Downloaded magenta-sys v0.1.1
[INFO] [stderr]   Downloaded custom_derive v0.1.7
[INFO] [stderr]   Downloaded lazy_static v0.2.8
[INFO] [stderr]   Downloaded conv v0.3.3
[INFO] [stderr]   Downloaded num v0.1.40
[INFO] [stderr]   Downloaded sdl2 v0.30.0
[INFO] [stderr]   Downloaded libc v0.2.30
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2673df1c1ee59a090ee7d7944cc745f9caf0473eb50af6890297410a03168b2e
[INFO] running `Command { std: "docker" "start" "-a" "2673df1c1ee59a090ee7d7944cc745f9caf0473eb50af6890297410a03168b2e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2673df1c1ee59a090ee7d7944cc745f9caf0473eb50af6890297410a03168b2e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2673df1c1ee59a090ee7d7944cc745f9caf0473eb50af6890297410a03168b2e", kill_on_drop: false }`
[INFO] [stdout] 2673df1c1ee59a090ee7d7944cc745f9caf0473eb50af6890297410a03168b2e
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+03c609abb6638f9d7f49f34326d4137d07f5cd61" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 034a77df30cf0ef1f72dcb0a077ac1dc665a705aa27cd167f6008a3fbb0e8c20
[INFO] running `Command { std: "docker" "start" "-a" "034a77df30cf0ef1f72dcb0a077ac1dc665a705aa27cd167f6008a3fbb0e8c20", kill_on_drop: false }`
[INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr]     Checking num-traits v0.1.40
[INFO] [stderr]     Checking libc v0.2.30
[INFO] [stderr]    Compiling sdl2-sys v0.30.0
[INFO] [stderr]     Checking bitflags v0.7.0
[INFO] [stderr]     Checking lazy_static v0.2.8
[INFO] [stderr]     Checking rand v0.3.16
[INFO] [stderr]     Checking num-integer v0.1.35
[INFO] [stderr]     Checking num-iter v0.1.34
[INFO] [stderr]     Checking num v0.1.40
[INFO] [stderr]     Checking sdl2 v0.30.0
[INFO] [stderr]     Checking gameboy_rs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/gameboy/memory.rs:21:20
[INFO] [stdout]    |
[INFO] [stdout] 21 |             0x0000 ... 0x7fff => self.cartridge.rom[address as usize],
[INFO] [stdout]    |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:156:20
[INFO] [stdout]     |
[INFO] [stdout] 156 |             0x0000 ... 0x7fff => self.rom.read_byte(address - 0x0000),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:158:20
[INFO] [stdout]     |
[INFO] [stdout] 158 |             0x8000 ... 0x9fff => self.read_vram((address - 0x8000) as usize),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:159:20
[INFO] [stdout]     |
[INFO] [stdout] 159 |             0xa000 ... 0xbfff => panic!("External RAM not yet supported!"),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:160:20
[INFO] [stdout]     |
[INFO] [stdout] 160 |             0xc000 ... 0xcfff => self.work_ram_0[(address - 0xc000) as usize],
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:161:20
[INFO] [stdout]     |
[INFO] [stdout] 161 |             0xd000 ... 0xdfff => self.work_ram_1[(address - 0xd000) as usize],
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:162:20
[INFO] [stdout]     |
[INFO] [stdout] 162 |             0xe000 ... 0xfdff => self.read_byte(address - 0xe000 + 0xc000),  // echoed
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:163:20
[INFO] [stdout]     |
[INFO] [stdout] 163 |             0xfe00 ... 0xfe9f => self.read_oam((address - 0xfe00) as usize),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:164:20
[INFO] [stdout]     |
[INFO] [stdout] 164 |             0xfea0 ... 0xfeff => 0,  // not usable
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:178:20
[INFO] [stdout]     |
[INFO] [stdout] 178 |             0xff00 ... 0xff7f => self.io_ports[(address - 0xff00) as usize].read_value,
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:180:20
[INFO] [stdout]     |
[INFO] [stdout] 180 |             0xff80 ... 0xfffe => self.high_ram[(address - 0xff80) as usize],
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:195:20
[INFO] [stdout]     |
[INFO] [stdout] 195 |             0x0000 ... 0x7fff => self.rom.write_byte(address, value),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:197:20
[INFO] [stdout]     |
[INFO] [stdout] 197 |             0x8000 ... 0x9fff => self.write_vram((address - 0x8000) as usize, value),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:198:20
[INFO] [stdout]     |
[INFO] [stdout] 198 |             0xa000 ... 0xbfff => panic!("External RAM not yet supported!"),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:199:20
[INFO] [stdout]     |
[INFO] [stdout] 199 |             0xc000 ... 0xcfff => self.work_ram_0[(address - 0xc000) as usize] = value,
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:200:20
[INFO] [stdout]     |
[INFO] [stdout] 200 |             0xd000 ... 0xdfff => self.work_ram_1[(address - 0xd000) as usize] = value,
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:201:20
[INFO] [stdout]     |
[INFO] [stdout] 201 |             0xe000 ... 0xfdff => self.write_byte(address - 0xe000 + 0xc000, value),  // echoed
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:202:20
[INFO] [stdout]     |
[INFO] [stdout] 202 |             0xfe00 ... 0xfe9f => self.write_oam((address - 0xfe00) as usize, value),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:203:20
[INFO] [stdout]     |
[INFO] [stdout] 203 |             0xfea0 ... 0xfeff => (),  // not usable
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:215:20
[INFO] [stdout]     |
[INFO] [stdout] 215 |             0xff00 ... 0xff7f => self.io_ports[(address - 0xff00) as usize].written_value = Some(value),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:218:20
[INFO] [stdout]     |
[INFO] [stdout] 218 |             0xff80 ... 0xfffe => {
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:151:89
[INFO] [stdout]     |
[INFO] [stdout] 151 |                 if let ButtonState::Released = input_state.right { button_value_bits |= (1 << 0); }
[INFO] [stdout]     |                                                                                         ^      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 151 -                 if let ButtonState::Released = input_state.right { button_value_bits |= (1 << 0); }
[INFO] [stdout] 151 +                 if let ButtonState::Released = input_state.right { button_value_bits |= 1 << 0; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:152:88
[INFO] [stdout]     |
[INFO] [stdout] 152 |                 if let ButtonState::Released = input_state.left { button_value_bits |= (1 << 1); }
[INFO] [stdout]     |                                                                                        ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 152 -                 if let ButtonState::Released = input_state.left { button_value_bits |= (1 << 1); }
[INFO] [stdout] 152 +                 if let ButtonState::Released = input_state.left { button_value_bits |= 1 << 1; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:153:86
[INFO] [stdout]     |
[INFO] [stdout] 153 |                 if let ButtonState::Released = input_state.up { button_value_bits |= (1 << 2); }
[INFO] [stdout]     |                                                                                      ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 153 -                 if let ButtonState::Released = input_state.up { button_value_bits |= (1 << 2); }
[INFO] [stdout] 153 +                 if let ButtonState::Released = input_state.up { button_value_bits |= 1 << 2; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:154:88
[INFO] [stdout]     |
[INFO] [stdout] 154 |                 if let ButtonState::Released = input_state.down { button_value_bits |= (1 << 3); }
[INFO] [stdout]     |                                                                                        ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 154 -                 if let ButtonState::Released = input_state.down { button_value_bits |= (1 << 3); }
[INFO] [stdout] 154 +                 if let ButtonState::Released = input_state.down { button_value_bits |= 1 << 3; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:159:85
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 if let ButtonState::Released = input_state.a { button_value_bits |= (1 << 0); }
[INFO] [stdout]     |                                                                                     ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 159 -                 if let ButtonState::Released = input_state.a { button_value_bits |= (1 << 0); }
[INFO] [stdout] 159 +                 if let ButtonState::Released = input_state.a { button_value_bits |= 1 << 0; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:160:85
[INFO] [stdout]     |
[INFO] [stdout] 160 |                 if let ButtonState::Released = input_state.b { button_value_bits |= (1 << 1); }
[INFO] [stdout]     |                                                                                     ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 160 -                 if let ButtonState::Released = input_state.b { button_value_bits |= (1 << 1); }
[INFO] [stdout] 160 +                 if let ButtonState::Released = input_state.b { button_value_bits |= 1 << 1; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:161:90
[INFO] [stdout]     |
[INFO] [stdout] 161 |                 if let ButtonState::Released = input_state.select { button_value_bits |= (1 << 2); }
[INFO] [stdout]     |                                                                                          ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 161 -                 if let ButtonState::Released = input_state.select { button_value_bits |= (1 << 2); }
[INFO] [stdout] 161 +                 if let ButtonState::Released = input_state.select { button_value_bits |= 1 << 2; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:162:89
[INFO] [stdout]     |
[INFO] [stdout] 162 |                 if let ButtonState::Released = input_state.start { button_value_bits |= (1 << 3); }
[INFO] [stdout]     |                                                                                         ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 162 -                 if let ButtonState::Released = input_state.start { button_value_bits |= (1 << 3); }
[INFO] [stdout] 162 +                 if let ButtonState::Released = input_state.start { button_value_bits |= 1 << 3; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::EventPump`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use sdl2::EventPump;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> src/main.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/main.rs:203:16
[INFO] [stdout]     |
[INFO] [stdout] 203 |             if (Instant::now() - start_time > Duration::from_millis(timeout)) {
[INFO] [stdout]     |                ^                                                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 203 -             if (Instant::now() - start_time > Duration::from_millis(timeout)) {
[INFO] [stdout] 203 +             if Instant::now() - start_time > Duration::from_millis(timeout) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:226:30
[INFO] [stdout]     |
[INFO] [stdout] 226 |         let frame_duration = (end_time - start_time);
[INFO] [stdout]     |                              ^                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 226 -         let frame_duration = (end_time - start_time);
[INFO] [stdout] 226 +         let frame_duration = end_time - start_time;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/main.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 239 |         if (frame_duration < target_duration) {
[INFO] [stdout]     |            ^                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 239 -         if (frame_duration < target_duration) {
[INFO] [stdout] 239 +         if frame_duration < target_duration {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:245:36
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let total_frame_duration = (actual_end_time - start_time);
[INFO] [stdout]     |                                    ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 245 -         let total_frame_duration = (actual_end_time - start_time);
[INFO] [stdout] 245 +         let total_frame_duration = actual_end_time - start_time;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/gameboy/memory.rs:21:20
[INFO] [stdout]    |
[INFO] [stdout] 21 |             0x0000 ... 0x7fff => self.cartridge.rom[address as usize],
[INFO] [stdout]    |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:156:20
[INFO] [stdout]     |
[INFO] [stdout] 156 |             0x0000 ... 0x7fff => self.rom.read_byte(address - 0x0000),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:158:20
[INFO] [stdout]     |
[INFO] [stdout] 158 |             0x8000 ... 0x9fff => self.read_vram((address - 0x8000) as usize),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:159:20
[INFO] [stdout]     |
[INFO] [stdout] 159 |             0xa000 ... 0xbfff => panic!("External RAM not yet supported!"),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:160:20
[INFO] [stdout]     |
[INFO] [stdout] 160 |             0xc000 ... 0xcfff => self.work_ram_0[(address - 0xc000) as usize],
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:161:20
[INFO] [stdout]     |
[INFO] [stdout] 161 |             0xd000 ... 0xdfff => self.work_ram_1[(address - 0xd000) as usize],
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:162:20
[INFO] [stdout]     |
[INFO] [stdout] 162 |             0xe000 ... 0xfdff => self.read_byte(address - 0xe000 + 0xc000),  // echoed
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:163:20
[INFO] [stdout]     |
[INFO] [stdout] 163 |             0xfe00 ... 0xfe9f => self.read_oam((address - 0xfe00) as usize),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:164:20
[INFO] [stdout]     |
[INFO] [stdout] 164 |             0xfea0 ... 0xfeff => 0,  // not usable
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:178:20
[INFO] [stdout]     |
[INFO] [stdout] 178 |             0xff00 ... 0xff7f => self.io_ports[(address - 0xff00) as usize].read_value,
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:180:20
[INFO] [stdout]     |
[INFO] [stdout] 180 |             0xff80 ... 0xfffe => self.high_ram[(address - 0xff80) as usize],
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:195:20
[INFO] [stdout]     |
[INFO] [stdout] 195 |             0x0000 ... 0x7fff => self.rom.write_byte(address, value),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:197:20
[INFO] [stdout]     |
[INFO] [stdout] 197 |             0x8000 ... 0x9fff => self.write_vram((address - 0x8000) as usize, value),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:198:20
[INFO] [stdout]     |
[INFO] [stdout] 198 |             0xa000 ... 0xbfff => panic!("External RAM not yet supported!"),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:199:20
[INFO] [stdout]     |
[INFO] [stdout] 199 |             0xc000 ... 0xcfff => self.work_ram_0[(address - 0xc000) as usize] = value,
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:200:20
[INFO] [stdout]     |
[INFO] [stdout] 200 |             0xd000 ... 0xdfff => self.work_ram_1[(address - 0xd000) as usize] = value,
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:201:20
[INFO] [stdout]     |
[INFO] [stdout] 201 |             0xe000 ... 0xfdff => self.write_byte(address - 0xe000 + 0xc000, value),  // echoed
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:202:20
[INFO] [stdout]     |
[INFO] [stdout] 202 |             0xfe00 ... 0xfe9f => self.write_oam((address - 0xfe00) as usize, value),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:203:20
[INFO] [stdout]     |
[INFO] [stdout] 203 |             0xfea0 ... 0xfeff => (),  // not usable
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:215:20
[INFO] [stdout]     |
[INFO] [stdout] 215 |             0xff00 ... 0xff7f => self.io_ports[(address - 0xff00) as usize].written_value = Some(value),
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]    --> src/gameboy/memory.rs:218:20
[INFO] [stdout]     |
[INFO] [stdout] 218 |             0xff80 ... 0xfffe => {
[INFO] [stdout]     |                    ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:151:89
[INFO] [stdout]     |
[INFO] [stdout] 151 |                 if let ButtonState::Released = input_state.right { button_value_bits |= (1 << 0); }
[INFO] [stdout]     |                                                                                         ^      ^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 151 -                 if let ButtonState::Released = input_state.right { button_value_bits |= (1 << 0); }
[INFO] [stdout] 151 +                 if let ButtonState::Released = input_state.right { button_value_bits |= 1 << 0; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:152:88
[INFO] [stdout]     |
[INFO] [stdout] 152 |                 if let ButtonState::Released = input_state.left { button_value_bits |= (1 << 1); }
[INFO] [stdout]     |                                                                                        ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 152 -                 if let ButtonState::Released = input_state.left { button_value_bits |= (1 << 1); }
[INFO] [stdout] 152 +                 if let ButtonState::Released = input_state.left { button_value_bits |= 1 << 1; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:153:86
[INFO] [stdout]     |
[INFO] [stdout] 153 |                 if let ButtonState::Released = input_state.up { button_value_bits |= (1 << 2); }
[INFO] [stdout]     |                                                                                      ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 153 -                 if let ButtonState::Released = input_state.up { button_value_bits |= (1 << 2); }
[INFO] [stdout] 153 +                 if let ButtonState::Released = input_state.up { button_value_bits |= 1 << 2; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:154:88
[INFO] [stdout]     |
[INFO] [stdout] 154 |                 if let ButtonState::Released = input_state.down { button_value_bits |= (1 << 3); }
[INFO] [stdout]     |                                                                                        ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 154 -                 if let ButtonState::Released = input_state.down { button_value_bits |= (1 << 3); }
[INFO] [stdout] 154 +                 if let ButtonState::Released = input_state.down { button_value_bits |= 1 << 3; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:159:85
[INFO] [stdout]     |
[INFO] [stdout] 159 |                 if let ButtonState::Released = input_state.a { button_value_bits |= (1 << 0); }
[INFO] [stdout]     |                                                                                     ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 159 -                 if let ButtonState::Released = input_state.a { button_value_bits |= (1 << 0); }
[INFO] [stdout] 159 +                 if let ButtonState::Released = input_state.a { button_value_bits |= 1 << 0; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:160:85
[INFO] [stdout]     |
[INFO] [stdout] 160 |                 if let ButtonState::Released = input_state.b { button_value_bits |= (1 << 1); }
[INFO] [stdout]     |                                                                                     ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 160 -                 if let ButtonState::Released = input_state.b { button_value_bits |= (1 << 1); }
[INFO] [stdout] 160 +                 if let ButtonState::Released = input_state.b { button_value_bits |= 1 << 1; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:161:90
[INFO] [stdout]     |
[INFO] [stdout] 161 |                 if let ButtonState::Released = input_state.select { button_value_bits |= (1 << 2); }
[INFO] [stdout]     |                                                                                          ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 161 -                 if let ButtonState::Released = input_state.select { button_value_bits |= (1 << 2); }
[INFO] [stdout] 161 +                 if let ButtonState::Released = input_state.select { button_value_bits |= 1 << 2; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/gameboy/joypad.rs:162:89
[INFO] [stdout]     |
[INFO] [stdout] 162 |                 if let ButtonState::Released = input_state.start { button_value_bits |= (1 << 3); }
[INFO] [stdout]     |                                                                                         ^      ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 162 -                 if let ButtonState::Released = input_state.start { button_value_bits |= (1 << 3); }
[INFO] [stdout] 162 +                 if let ButtonState::Released = input_state.start { button_value_bits |= 1 << 3; }
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sdl2::EventPump`
[INFO] [stdout]   --> src/main.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 | use sdl2::EventPump;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::thread`
[INFO] [stdout]   --> src/main.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | use std::thread;
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/main.rs:203:16
[INFO] [stdout]     |
[INFO] [stdout] 203 |             if (Instant::now() - start_time > Duration::from_millis(timeout)) {
[INFO] [stdout]     |                ^                                                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 203 -             if (Instant::now() - start_time > Duration::from_millis(timeout)) {
[INFO] [stdout] 203 +             if Instant::now() - start_time > Duration::from_millis(timeout) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:226:30
[INFO] [stdout]     |
[INFO] [stdout] 226 |         let frame_duration = (end_time - start_time);
[INFO] [stdout]     |                              ^                     ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 226 -         let frame_duration = (end_time - start_time);
[INFO] [stdout] 226 +         let frame_duration = end_time - start_time;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around `if` condition
[INFO] [stdout]    --> src/main.rs:239:12
[INFO] [stdout]     |
[INFO] [stdout] 239 |         if (frame_duration < target_duration) {
[INFO] [stdout]     |            ^                                ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 239 -         if (frame_duration < target_duration) {
[INFO] [stdout] 239 +         if frame_duration < target_duration {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around assigned value
[INFO] [stdout]    --> src/main.rs:245:36
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let total_frame_duration = (actual_end_time - start_time);
[INFO] [stdout]     |                                    ^                            ^
[INFO] [stdout]     |
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]     |
[INFO] [stdout] 245 -         let total_frame_duration = (actual_end_time - start_time);
[INFO] [stdout] 245 +         let total_frame_duration = actual_end_time - start_time;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `half_carry`
[INFO] [stdout]    --> src/gameboy/cpu.rs:597:13
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let half_carry = (self.registers.a & 0x0f) < (operand & 0x0f);
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_half_carry`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `half_carry`
[INFO] [stdout]    --> src/gameboy/cpu.rs:608:13
[INFO] [stdout]     |
[INFO] [stdout] 608 |         let half_carry = (self.registers.a & 0x0f) < (operand & 0x0f);
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_half_carry`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `half_carry`
[INFO] [stdout]    --> src/gameboy/cpu.rs:620:13
[INFO] [stdout]     |
[INFO] [stdout] 620 |         let half_carry = (self.registers.a & 0x0f) < (operand & 0x0f);
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_half_carry`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1304 |             0x20 => Jump(flag!(NZ), immediate!(JumpTarget Relative)),
[INFO] [stdout]      |                                     ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1305 |             0x30 => Jump(flag!(NC), immediate!(JumpTarget Relative)),
[INFO] [stdout]      |                                     ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1307 |             0x01 => Load16(double_register!(mut BC), immediate!(Word)),
[INFO] [stdout]      |                                                      ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1308 |             0x11 => Load16(double_register!(mut DE), immediate!(Word)),
[INFO] [stdout]      |                                                      ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1309 |             0x21 => Load16(double_register!(mut HL), immediate!(Word)),
[INFO] [stdout]      |                                                      ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1310 |             0x31 => Load16(MutableWord::StackPointer, immediate!(Word)),
[INFO] [stdout]      |                                                       ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1332 |             0x06 => Load8(register!(mut B), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1333 |             0x16 => Load8(register!(mut D), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1334 |             0x26 => Load8(register!(mut H), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1335 |             0x36 => Load8(double_register_indirect!(mut HL), immediate!(Byte)),
[INFO] [stdout]      |                                                              ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1343 |             0x18 => Jump(flag!(*), immediate!(JumpTarget Relative)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1344 |             0x28 => Jump(flag!(Z), immediate!(JumpTarget Relative)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1345 |             0x38 => Jump(flag!(C), immediate!(JumpTarget Relative)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1372 |             0x0e => Load8(register!(mut C), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1373 |             0x1e => Load8(register!(mut E), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1374 |             0x2e => Load8(register!(mut L), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1375 |             0x3e => Load8(register!(mut A), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1525 |             0xe0 => Load8(MutableByte::ImmediateIndirectHigh(get_next!(Byte)), register!(A)),
[INFO] [stdout]      |                                                              --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1526 |             0xf0 => Load8(register!(mut A), Byte::ImmediateIndirectHigh(get_next!(Byte))),
[INFO] [stdout]      |                                                                         --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1533 |             0xc2 => Jump(flag!(NZ), immediate!(JumpTarget Absolute)),
[INFO] [stdout]      |                                     ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1534 |             0xd2 => Jump(flag!(NC), immediate!(JumpTarget Absolute)),
[INFO] [stdout]      |                                     ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1538 |             0xc3 => Jump(flag!(*), immediate!(JumpTarget Absolute)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1543 |             0xc4 => Call(flag!(NZ), get_next!(Word)),
[INFO] [stdout]      |                                     --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1544 |             0xd4 => Call(flag!(NC), get_next!(Word)),
[INFO] [stdout]      |                                     --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1553 |             0xc6 => Add(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1554 |             0xd6 => Sub(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1555 |             0xe6 => And(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1556 |             0xf6 => Or(immediate!(Byte)),
[INFO] [stdout]      |                        ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1573 |             0xca => Jump(flag!(Z), immediate!(JumpTarget Absolute)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1574 |             0xda => Jump(flag!(C), immediate!(JumpTarget Absolute)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1575 |             0xea => Load8(MutableByte::ImmediateIndirect(get_next!(Word)), register!(A)),
[INFO] [stdout]      |                                                          --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1576 |             0xfa => Load8(register!(mut A), Byte::ImmediateIndirect(get_next!(Word))),
[INFO] [stdout]      |                                                                     --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1578 |             0xcb => Instruction::decode_cb(get_next!(Byte)),
[INFO] [stdout]      |                                            --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1583 |             0xcc => Call(flag!(Z), get_next!(Word)),
[INFO] [stdout]      |                                    --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1584 |             0xdc => Call(flag!(C), get_next!(Word)),
[INFO] [stdout]      |                                    --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1588 |             0xcd => Call(flag!(*), get_next!(Word)),
[INFO] [stdout]      |                                    --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1593 |             0xce => Adc(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1594 |             0xde => Sbc(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1595 |             0xee => Xor(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1596 |             0xfe => Cp(immediate!(Byte)),
[INFO] [stdout]      |                        ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/gameboy/cpu.rs:1988:13
[INFO] [stdout]      |
[INFO] [stdout] 1976 |             Ret(_) => 0,
[INFO] [stdout]      |             ------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 1988 |             Ret(_) | Reti | Rst(_) => 0,
[INFO] [stdout]      |             ^^^^^^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]   --> src/gameboy/memory.rs:32:26
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn write_byte(&self, address: u16, value: u8) {
[INFO] [stdout]    |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/gameboy/memory.rs:32:40
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn write_byte(&self, address: u16, value: u8) {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gameboy/memory.rs:182:13
[INFO] [stdout]     |
[INFO] [stdout] 182 |             _ => unreachable!(),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gameboy/memory.rs:182:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |             0x0000 ... 0x7fff => self.rom.read_byte(address - 0x0000),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 157 |
[INFO] [stdout] 158 |             0x8000 ... 0x9fff => self.read_vram((address - 0x8000) as usize),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 159 |             0xa000 ... 0xbfff => panic!("External RAM not yet supported!"),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 160 |             0xc000 ... 0xcfff => self.work_ram_0[(address - 0xc000) as usize],
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 182 |             _ => unreachable!(),
[INFO] [stdout]     |             ^ ...and 8 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gameboy/memory.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |             _ => unreachable!(),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gameboy/memory.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 195 |             0x0000 ... 0x7fff => self.rom.write_byte(address, value),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 196 |
[INFO] [stdout] 197 |             0x8000 ... 0x9fff => self.write_vram((address - 0x8000) as usize, value),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 198 |             0xa000 ... 0xbfff => panic!("External RAM not yet supported!"),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 199 |             0xc000 ... 0xcfff => self.work_ram_0[(address - 0xc000) as usize] = value,
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 222 |             _ => unreachable!(),
[INFO] [stdout]     |             ^ ...and 8 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `VBLANK_CLOCKS`
[INFO] [stdout]    --> src/gameboy/graphics.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let VBLANK_CLOCKS = 10 * SCANLINE_PERIOD;
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_VBLANK_CLOCKS`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/gameboy/graphics.rs:332:28
[INFO] [stdout]     |
[INFO] [stdout] 332 |     fn set_mode(&mut self, mode: Mode) {
[INFO] [stdout]     |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x_flip`
[INFO] [stdout]    --> src/gameboy/graphics.rs:536:25
[INFO] [stdout]     |
[INFO] [stdout] 536 |                     let x_flip = sprite_data.flags & 0x20 == 0x20;
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_x_flip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y_flip`
[INFO] [stdout]    --> src/gameboy/graphics.rs:537:25
[INFO] [stdout]     |
[INFO] [stdout] 537 |                     let y_flip = sprite_data.flags & 0x40 == 0x40;
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_y_flip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `half_carry`
[INFO] [stdout]    --> src/gameboy/cpu.rs:597:13
[INFO] [stdout]     |
[INFO] [stdout] 597 |         let half_carry = (self.registers.a & 0x0f) < (operand & 0x0f);
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_half_carry`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `half_carry`
[INFO] [stdout]    --> src/gameboy/cpu.rs:608:13
[INFO] [stdout]     |
[INFO] [stdout] 608 |         let half_carry = (self.registers.a & 0x0f) < (operand & 0x0f);
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_half_carry`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `half_carry`
[INFO] [stdout]    --> src/gameboy/cpu.rs:620:13
[INFO] [stdout]     |
[INFO] [stdout] 620 |         let half_carry = (self.registers.a & 0x0f) < (operand & 0x0f);
[INFO] [stdout]     |             ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_half_carry`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let mut memory = Rc::new(RefCell::new(MemoryUnit::new(&cartridge)));
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repeat`
[INFO] [stdout]    --> src/main.rs:143:51
[INFO] [stdout]     |
[INFO] [stdout] 143 |                 KeyDown { keycode: Some(keycode), repeat, keymod, .. } => match keycode {
[INFO] [stdout]     |                                                   ^^^^^^ help: try ignoring the field: `repeat: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keymod`
[INFO] [stdout]    --> src/main.rs:143:59
[INFO] [stdout]     |
[INFO] [stdout] 143 |                 KeyDown { keycode: Some(keycode), repeat, keymod, .. } => match keycode {
[INFO] [stdout]     |                                                           ^^^^^^ help: try ignoring the field: `keymod: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sleep_duration`
[INFO] [stdout]    --> src/main.rs:240:17
[INFO] [stdout]     |
[INFO] [stdout] 240 |             let sleep_duration = target_duration - frame_duration;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sleep_duration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total_frame_duration`
[INFO] [stdout]    --> src/main.rs:245:13
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let total_frame_duration = (actual_end_time - start_time);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_frame_duration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CartridgeType` is never used
[INFO] [stdout]  --> src/gameboy/cartridge.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum CartridgeType {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `rla` is never used
[INFO] [stdout]    --> src/gameboy/cpu.rs:563:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl<'a> Cpu<'a> {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 563 |     fn rla(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ImmediateIndirect` is never constructed
[INFO] [stdout]     --> src/gameboy/cpu.rs:1126:5
[INFO] [stdout]      |
[INFO] [stdout] 1123 | enum MutableWord {
[INFO] [stdout]      |      ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1126 |     ImmediateIndirect(u16),
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `MutableWord` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cycles` and `next_mode` are never used
[INFO] [stdout]   --> src/gameboy/graphics.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | impl Mode {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 82 |     fn cycles(self) -> i32 {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     fn next_mode(self, scanline: u8) -> Mode {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mode` and `mode_switch_timer` are never read
[INFO] [stdout]    --> src/gameboy/graphics.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub struct Gpu<'a> {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 119 |     mode: Mode,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 120 |     /// Number of cycles left until mode switch
[INFO] [stdout] 121 |     mode_switch_timer: i32,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset`, `is_in_vblank`, and `set_mode` are never used
[INFO] [stdout]    --> src/gameboy/graphics.rs:156:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl<'a> Gpu<'a> {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn is_in_vblank(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     fn set_mode(&mut self, mode: Mode) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `read_user_input` is never used
[INFO] [stdout]   --> src/gameboy/joypad.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl InputState {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 46 |     fn read_user_input() -> InputState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TIMA_PORT_NUMBER` is never used
[INFO] [stdout]  --> src/gameboy/timer.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const TIMA_PORT_NUMBER: u8 = 0x05;      // Timer Counter Register
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TMA_PORT_NUMBER` is never used
[INFO] [stdout]   --> src/gameboy/timer.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const TMA_PORT_NUMBER: u8 = 0x06;       // Timer Modulo Register
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TAC_PORT_NUMBER` is never used
[INFO] [stdout]   --> src/gameboy/timer.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const TAC_PORT_NUMBER: u8 = 0x07;       // Timer Control Register
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset` is never used
[INFO] [stdout]   --> src/gameboy/timer.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl<'a> Timer<'a> {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |         texture.update(None, &pixel_data, format.byte_size_of_pixels(gameboy::graphics::DISPLAY_RESOLUTION_X as usize));
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let _ = texture.update(None, &pixel_data, format.byte_size_of_pixels(gameboy::graphics::DISPLAY_RESOLUTION_X as usize));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:220:9
[INFO] [stdout]     |
[INFO] [stdout] 220 |         canvas.copy(&texture, None, None);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 220 |         let _ = canvas.copy(&texture, None, None);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/gameboy/memory.rs:81:45
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub fn new(cartridge: &'a Cartridge) -> MemoryUnit {
[INFO] [stdout]    |                            --               ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                            |
[INFO] [stdout]    |                            the lifetime is named here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub fn new(cartridge: &'a Cartridge) -> MemoryUnit<'a> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OAM_READ_CLOCKS` should have a snake case name
[INFO] [stdout]    --> src/gameboy/graphics.rs:175:13
[INFO] [stdout]     |
[INFO] [stdout] 175 |         let OAM_READ_CLOCKS = 80;           // about 19 us
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `oam_read_clocks`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `LCD_TRANSFER_CLOCKS` should have a snake case name
[INFO] [stdout]    --> src/gameboy/graphics.rs:176:13
[INFO] [stdout]     |
[INFO] [stdout] 176 |         let LCD_TRANSFER_CLOCKS = 171;      // about 41 us
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `lcd_transfer_clocks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `HBLANK_CLOCKS` should have a snake case name
[INFO] [stdout]    --> src/gameboy/graphics.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let HBLANK_CLOCKS = 205;            // about 48.6 us
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `hblank_clocks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `SCANLINE_PERIOD` should have a snake case name
[INFO] [stdout]    --> src/gameboy/graphics.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |         let SCANLINE_PERIOD = OAM_READ_CLOCKS + LCD_TRANSFER_CLOCKS + HBLANK_CLOCKS;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `scanline_period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `VBLANK_CLOCKS` should have a snake case name
[INFO] [stdout]    --> src/gameboy/graphics.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let VBLANK_CLOCKS = 10 * SCANLINE_PERIOD;
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `vblank_clocks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]    --> src/gameboy/joypad.rs:116:56
[INFO] [stdout]     |
[INFO] [stdout] 116 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Joypad {
[INFO] [stdout]     |                                              --        ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              the lifetime is named here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]     |
[INFO] [stdout] 116 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Joypad<'a> {
[INFO] [stdout]     |                                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/gameboy/timer.rs:26:56
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Timer {
[INFO] [stdout]    |                                              --        ^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                              |
[INFO] [stdout]    |                                              the lifetime is named here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Timer<'a> {
[INFO] [stdout]    |                                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/gameboy/dma.rs:26:56
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Dma {
[INFO] [stdout]    |                                              --        ^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                              |
[INFO] [stdout]    |                                              the lifetime is named here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Dma<'a> {
[INFO] [stdout]    |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1304 |             0x20 => Jump(flag!(NZ), immediate!(JumpTarget Relative)),
[INFO] [stdout]      |                                     ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1305 |             0x30 => Jump(flag!(NC), immediate!(JumpTarget Relative)),
[INFO] [stdout]      |                                     ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1307 |             0x01 => Load16(double_register!(mut BC), immediate!(Word)),
[INFO] [stdout]      |                                                      ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1308 |             0x11 => Load16(double_register!(mut DE), immediate!(Word)),
[INFO] [stdout]      |                                                      ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1309 |             0x21 => Load16(double_register!(mut HL), immediate!(Word)),
[INFO] [stdout]      |                                                      ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1310 |             0x31 => Load16(MutableWord::StackPointer, immediate!(Word)),
[INFO] [stdout]      |                                                       ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1332 |             0x06 => Load8(register!(mut B), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1333 |             0x16 => Load8(register!(mut D), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1334 |             0x26 => Load8(register!(mut H), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1335 |             0x36 => Load8(double_register_indirect!(mut HL), immediate!(Byte)),
[INFO] [stdout]      |                                                              ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1343 |             0x18 => Jump(flag!(*), immediate!(JumpTarget Relative)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1344 |             0x28 => Jump(flag!(Z), immediate!(JumpTarget Relative)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1345 |             0x38 => Jump(flag!(C), immediate!(JumpTarget Relative)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1372 |             0x0e => Load8(register!(mut C), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1373 |             0x1e => Load8(register!(mut E), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1374 |             0x2e => Load8(register!(mut L), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1375 |             0x3e => Load8(register!(mut A), immediate!(Byte)),
[INFO] [stdout]      |                                             ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1525 |             0xe0 => Load8(MutableByte::ImmediateIndirectHigh(get_next!(Byte)), register!(A)),
[INFO] [stdout]      |                                                              --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1526 |             0xf0 => Load8(register!(mut A), Byte::ImmediateIndirectHigh(get_next!(Byte))),
[INFO] [stdout]      |                                                                         --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1533 |             0xc2 => Jump(flag!(NZ), immediate!(JumpTarget Absolute)),
[INFO] [stdout]      |                                     ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1534 |             0xd2 => Jump(flag!(NC), immediate!(JumpTarget Absolute)),
[INFO] [stdout]      |                                     ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1538 |             0xc3 => Jump(flag!(*), immediate!(JumpTarget Absolute)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1543 |             0xc4 => Call(flag!(NZ), get_next!(Word)),
[INFO] [stdout]      |                                     --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1544 |             0xd4 => Call(flag!(NC), get_next!(Word)),
[INFO] [stdout]      |                                     --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1553 |             0xc6 => Add(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1554 |             0xd6 => Sub(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1555 |             0xe6 => And(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1556 |             0xf6 => Or(immediate!(Byte)),
[INFO] [stdout]      |                        ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1573 |             0xca => Jump(flag!(Z), immediate!(JumpTarget Absolute)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1574 |             0xda => Jump(flag!(C), immediate!(JumpTarget Absolute)),
[INFO] [stdout]      |                                    ------------------------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1575 |             0xea => Load8(MutableByte::ImmediateIndirect(get_next!(Word)), register!(A)),
[INFO] [stdout]      |                                                          --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1576 |             0xfa => Load8(register!(mut A), Byte::ImmediateIndirect(get_next!(Word))),
[INFO] [stdout]      |                                                                     --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1578 |             0xcb => Instruction::decode_cb(get_next!(Byte)),
[INFO] [stdout]      |                                            --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1583 |             0xcc => Call(flag!(Z), get_next!(Word)),
[INFO] [stdout]      |                                    --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1584 |             0xdc => Call(flag!(C), get_next!(Word)),
[INFO] [stdout]      |                                    --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1255:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ------------ `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1255 |                     address += 2;
[INFO] [stdout]      |                     ^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 1588 |             0xcd => Call(flag!(*), get_next!(Word)),
[INFO] [stdout]      |                                    --------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1593 |             0xce => Adc(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1594 |             0xde => Sbc(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     this value is reassigned later and never used
[INFO] [stdout]      |                     `address` is overwritten here before the previous value is read
[INFO] [stdout] ...
[INFO] [stdout] 1595 |             0xee => Xor(immediate!(Byte)),
[INFO] [stdout]      |                         ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `address` is never read
[INFO] [stdout]     --> src/gameboy/cpu.rs:1248:21
[INFO] [stdout]      |
[INFO] [stdout] 1248 |                     address += 1;
[INFO] [stdout]      |                     ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1596 |             0xfe => Cp(immediate!(Byte)),
[INFO] [stdout]      |                        ---------------- in this macro invocation
[INFO] [stdout]      |
[INFO] [stdout]      = help: maybe it is overwritten before being read?
[INFO] [stdout]      = note: this warning originates in the macro `get_next` which comes from the expansion of the macro `immediate` (in Nightly builds, run with -Z macro-backtrace for more info)
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]     --> src/gameboy/cpu.rs:1988:13
[INFO] [stdout]      |
[INFO] [stdout] 1976 |             Ret(_) => 0,
[INFO] [stdout]      |             ------ matches all the relevant values
[INFO] [stdout] ...
[INFO] [stdout] 1988 |             Ret(_) | Reti | Rst(_) => 0,
[INFO] [stdout]      |             ^^^^^^ no value can reach this
[INFO] [stdout]      |
[INFO] [stdout]      = note: `#[warn(unreachable_patterns)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `address`
[INFO] [stdout]   --> src/gameboy/memory.rs:32:26
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn write_byte(&self, address: u16, value: u8) {
[INFO] [stdout]    |                          ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_address`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `value`
[INFO] [stdout]   --> src/gameboy/memory.rs:32:40
[INFO] [stdout]    |
[INFO] [stdout] 32 |     fn write_byte(&self, address: u16, value: u8) {
[INFO] [stdout]    |                                        ^^^^^ help: if this is intentional, prefix it with an underscore: `_value`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gameboy/memory.rs:182:13
[INFO] [stdout]     |
[INFO] [stdout] 182 |             _ => unreachable!(),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gameboy/memory.rs:182:13
[INFO] [stdout]     |
[INFO] [stdout] 156 |             0x0000 ... 0x7fff => self.rom.read_byte(address - 0x0000),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 157 |
[INFO] [stdout] 158 |             0x8000 ... 0x9fff => self.read_vram((address - 0x8000) as usize),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 159 |             0xa000 ... 0xbfff => panic!("External RAM not yet supported!"),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 160 |             0xc000 ... 0xcfff => self.work_ram_0[(address - 0xc000) as usize],
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 182 |             _ => unreachable!(),
[INFO] [stdout]     |             ^ ...and 8 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable pattern
[INFO] [stdout]    --> src/gameboy/memory.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 222 |             _ => unreachable!(),
[INFO] [stdout]     |             ^ no value can reach this
[INFO] [stdout]     |
[INFO] [stdout] note: multiple earlier patterns match some of the same values
[INFO] [stdout]    --> src/gameboy/memory.rs:222:13
[INFO] [stdout]     |
[INFO] [stdout] 195 |             0x0000 ... 0x7fff => self.rom.write_byte(address, value),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 196 |
[INFO] [stdout] 197 |             0x8000 ... 0x9fff => self.write_vram((address - 0x8000) as usize, value),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 198 |             0xa000 ... 0xbfff => panic!("External RAM not yet supported!"),
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] 199 |             0xc000 ... 0xcfff => self.work_ram_0[(address - 0xc000) as usize] = value,
[INFO] [stdout]     |             ----------------- matches some of the same values
[INFO] [stdout] ...
[INFO] [stdout] 222 |             _ => unreachable!(),
[INFO] [stdout]     |             ^ ...and 8 other patterns collectively make this unreachable
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `VBLANK_CLOCKS`
[INFO] [stdout]    --> src/gameboy/graphics.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let VBLANK_CLOCKS = 10 * SCANLINE_PERIOD;
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_VBLANK_CLOCKS`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `mode`
[INFO] [stdout]    --> src/gameboy/graphics.rs:332:28
[INFO] [stdout]     |
[INFO] [stdout] 332 |     fn set_mode(&mut self, mode: Mode) {
[INFO] [stdout]     |                            ^^^^ help: if this is intentional, prefix it with an underscore: `_mode`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `x_flip`
[INFO] [stdout]    --> src/gameboy/graphics.rs:536:25
[INFO] [stdout]     |
[INFO] [stdout] 536 |                     let x_flip = sprite_data.flags & 0x20 == 0x20;
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_x_flip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `y_flip`
[INFO] [stdout]    --> src/gameboy/graphics.rs:537:25
[INFO] [stdout]     |
[INFO] [stdout] 537 |                     let y_flip = sprite_data.flags & 0x40 == 0x40;
[INFO] [stdout]     |                         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_y_flip`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/main.rs:94:9
[INFO] [stdout]    |
[INFO] [stdout] 94 |     let mut memory = Rc::new(RefCell::new(MemoryUnit::new(&cartridge)));
[INFO] [stdout]    |         ----^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `repeat`
[INFO] [stdout]    --> src/main.rs:143:51
[INFO] [stdout]     |
[INFO] [stdout] 143 |                 KeyDown { keycode: Some(keycode), repeat, keymod, .. } => match keycode {
[INFO] [stdout]     |                                                   ^^^^^^ help: try ignoring the field: `repeat: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `keymod`
[INFO] [stdout]    --> src/main.rs:143:59
[INFO] [stdout]     |
[INFO] [stdout] 143 |                 KeyDown { keycode: Some(keycode), repeat, keymod, .. } => match keycode {
[INFO] [stdout]     |                                                           ^^^^^^ help: try ignoring the field: `keymod: _`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `sleep_duration`
[INFO] [stdout]    --> src/main.rs:240:17
[INFO] [stdout]     |
[INFO] [stdout] 240 |             let sleep_duration = target_duration - frame_duration;
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_sleep_duration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `total_frame_duration`
[INFO] [stdout]    --> src/main.rs:245:13
[INFO] [stdout]     |
[INFO] [stdout] 245 |         let total_frame_duration = (actual_end_time - start_time);
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_total_frame_duration`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `CartridgeType` is never used
[INFO] [stdout]  --> src/gameboy/cartridge.rs:7:10
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub enum CartridgeType {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `rla` is never used
[INFO] [stdout]    --> src/gameboy/cpu.rs:563:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | impl<'a> Cpu<'a> {
[INFO] [stdout]     | ---------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 563 |     fn rla(&mut self) {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `ImmediateIndirect` is never constructed
[INFO] [stdout]     --> src/gameboy/cpu.rs:1126:5
[INFO] [stdout]      |
[INFO] [stdout] 1123 | enum MutableWord {
[INFO] [stdout]      |      ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1126 |     ImmediateIndirect(u16),
[INFO] [stdout]      |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `MutableWord` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cycles` and `next_mode` are never used
[INFO] [stdout]   --> src/gameboy/graphics.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | impl Mode {
[INFO] [stdout]    | --------- methods in this implementation
[INFO] [stdout] 82 |     fn cycles(self) -> i32 {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 92 |     fn next_mode(self, scanline: u8) -> Mode {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `mode` and `mode_switch_timer` are never read
[INFO] [stdout]    --> src/gameboy/graphics.rs:119:5
[INFO] [stdout]     |
[INFO] [stdout] 114 | pub struct Gpu<'a> {
[INFO] [stdout]     |            --- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 119 |     mode: Mode,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 120 |     /// Number of cycles left until mode switch
[INFO] [stdout] 121 |     mode_switch_timer: i32,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `reset`, `is_in_vblank`, and `set_mode` are never used
[INFO] [stdout]    --> src/gameboy/graphics.rs:156:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl<'a> Gpu<'a> {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn reset(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 327 |     pub fn is_in_vblank(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 332 |     fn set_mode(&mut self, mode: Mode) {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `read_user_input` is never used
[INFO] [stdout]   --> src/gameboy/joypad.rs:46:8
[INFO] [stdout]    |
[INFO] [stdout] 45 | impl InputState {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] 46 |     fn read_user_input() -> InputState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TIMA_PORT_NUMBER` is never used
[INFO] [stdout]  --> src/gameboy/timer.rs:9:7
[INFO] [stdout]   |
[INFO] [stdout] 9 | const TIMA_PORT_NUMBER: u8 = 0x05;      // Timer Counter Register
[INFO] [stdout]   |       ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TMA_PORT_NUMBER` is never used
[INFO] [stdout]   --> src/gameboy/timer.rs:10:7
[INFO] [stdout]    |
[INFO] [stdout] 10 | const TMA_PORT_NUMBER: u8 = 0x06;       // Timer Modulo Register
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TAC_PORT_NUMBER` is never used
[INFO] [stdout]   --> src/gameboy/timer.rs:11:7
[INFO] [stdout]    |
[INFO] [stdout] 11 | const TAC_PORT_NUMBER: u8 = 0x07;       // Timer Control Register
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `reset` is never used
[INFO] [stdout]   --> src/gameboy/timer.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl<'a> Timer<'a> {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn reset(&mut self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:219:9
[INFO] [stdout]     |
[INFO] [stdout] 219 |         texture.update(None, &pixel_data, format.byte_size_of_pixels(gameboy::graphics::DISPLAY_RESOLUTION_X as usize));
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 219 |         let _ = texture.update(None, &pixel_data, format.byte_size_of_pixels(gameboy::graphics::DISPLAY_RESOLUTION_X as usize));
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `Result` that must be used
[INFO] [stdout]    --> src/main.rs:220:9
[INFO] [stdout]     |
[INFO] [stdout] 220 |         canvas.copy(&texture, None, None);
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 220 |         let _ = canvas.copy(&texture, None, None);
[INFO] [stdout]     |         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/gameboy/memory.rs:81:45
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub fn new(cartridge: &'a Cartridge) -> MemoryUnit {
[INFO] [stdout]    |                            --               ^^^^^^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                            |
[INFO] [stdout]    |                            the lifetime is named here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout]    = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 81 |     pub fn new(cartridge: &'a Cartridge) -> MemoryUnit<'a> {
[INFO] [stdout]    |                                                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `OAM_READ_CLOCKS` should have a snake case name
[INFO] [stdout]    --> src/gameboy/graphics.rs:175:13
[INFO] [stdout]     |
[INFO] [stdout] 175 |         let OAM_READ_CLOCKS = 80;           // about 19 us
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `oam_read_clocks`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(non_snake_case)]` (part of `#[warn(nonstandard_style)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `LCD_TRANSFER_CLOCKS` should have a snake case name
[INFO] [stdout]    --> src/gameboy/graphics.rs:176:13
[INFO] [stdout]     |
[INFO] [stdout] 176 |         let LCD_TRANSFER_CLOCKS = 171;      // about 41 us
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `lcd_transfer_clocks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `HBLANK_CLOCKS` should have a snake case name
[INFO] [stdout]    --> src/gameboy/graphics.rs:177:13
[INFO] [stdout]     |
[INFO] [stdout] 177 |         let HBLANK_CLOCKS = 205;            // about 48.6 us
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `hblank_clocks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `SCANLINE_PERIOD` should have a snake case name
[INFO] [stdout]    --> src/gameboy/graphics.rs:179:13
[INFO] [stdout]     |
[INFO] [stdout] 179 |         let SCANLINE_PERIOD = OAM_READ_CLOCKS + LCD_TRANSFER_CLOCKS + HBLANK_CLOCKS;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^ help: convert the identifier to snake case: `scanline_period`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable `VBLANK_CLOCKS` should have a snake case name
[INFO] [stdout]    --> src/gameboy/graphics.rs:183:13
[INFO] [stdout]     |
[INFO] [stdout] 183 |         let VBLANK_CLOCKS = 10 * SCANLINE_PERIOD;
[INFO] [stdout]     |             ^^^^^^^^^^^^^ help: convert the identifier to snake case: `vblank_clocks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]    --> src/gameboy/joypad.rs:116:56
[INFO] [stdout]     |
[INFO] [stdout] 116 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Joypad {
[INFO] [stdout]     |                                              --        ^^^^^^ the same lifetime is hidden here
[INFO] [stdout]     |                                              |
[INFO] [stdout]     |                                              the lifetime is named here
[INFO] [stdout]     |
[INFO] [stdout]     = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]     |
[INFO] [stdout] 116 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Joypad<'a> {
[INFO] [stdout]     |                                                              ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/gameboy/timer.rs:26:56
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Timer {
[INFO] [stdout]    |                                              --        ^^^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                              |
[INFO] [stdout]    |                                              the lifetime is named here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Timer<'a> {
[INFO] [stdout]    |                                                             ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: hiding a lifetime that's named elsewhere is confusing
[INFO] [stdout]   --> src/gameboy/dma.rs:26:56
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Dma {
[INFO] [stdout]    |                                              --        ^^^ the same lifetime is hidden here
[INFO] [stdout]    |                                              |
[INFO] [stdout]    |                                              the lifetime is named here
[INFO] [stdout]    |
[INFO] [stdout]    = help: the same lifetime is referred to in inconsistent ways, making the signature confusing
[INFO] [stdout] help: consistently use `'a`
[INFO] [stdout]    |
[INFO] [stdout] 26 |     pub fn new(memory: Rc<RefCell<MemoryUnit<'a>>>) -> Dma<'a> {
[INFO] [stdout]    |                                                           ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.78s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: bitflags v0.7.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "034a77df30cf0ef1f72dcb0a077ac1dc665a705aa27cd167f6008a3fbb0e8c20", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "034a77df30cf0ef1f72dcb0a077ac1dc665a705aa27cd167f6008a3fbb0e8c20", kill_on_drop: false }`
[INFO] [stdout] 034a77df30cf0ef1f72dcb0a077ac1dc665a705aa27cd167f6008a3fbb0e8c20
